package net.wanho.controller;

import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import net.wanho.util.ServletUtils;
import net.wanho.vo.AjaxResult;
import net.wanho.vo.PageVo;
import net.wanho.vo.TableDataInfo;
import org.apache.commons.beanutils.BeanUtils;

import java.util.List;

public class BaseController {

    public AjaxResult success(String msg, Object data) {
        AjaxResult ajaxResult = new AjaxResult(true, 200, msg, data);
        return ajaxResult;
    }

    public AjaxResult success(String msg) {
        AjaxResult ajaxResult = new AjaxResult(true, 200, msg, null);
        return ajaxResult;
    }

    public AjaxResult success(Object data) {
        AjaxResult ajaxResult = new AjaxResult(true, 200, "操作成功", data);
        return ajaxResult;
    }

    public AjaxResult success() {
        AjaxResult ajaxResult = new AjaxResult(true, 200, "操作成功", null);
        return ajaxResult;
    }

    public AjaxResult error(String msg, Object data) {
        AjaxResult ajaxResult = new AjaxResult(false, 500, msg, data);
        return ajaxResult;
    }

    public AjaxResult error(String msg) {
        AjaxResult ajaxResult = new AjaxResult(false, 500, msg, null);
        return ajaxResult;
    }

    public AjaxResult error(Object data) {
        AjaxResult ajaxResult = new AjaxResult(false, 500, "操作失败", data);
        return ajaxResult;
    }

    public AjaxResult error() {
        AjaxResult ajaxResult = new AjaxResult(false, 500, "操作失败", null);
        return ajaxResult;
    }

    public void startPage() {

        PageVo pageVo = new PageVo();
        try {
            BeanUtils.populate(pageVo, ServletUtils.getRequest().getParameterMap());

            //验证
            if(pageVo.getPageNum()==null ||pageVo.getPageNum().intValue()<1 )
                pageVo.setPageNum(1);
            if(pageVo.getPageSize()==null ||pageVo.getPageSize().intValue()<1 )
                pageVo.setPageSize(10);

            // 如果排序列为空,则不排序
            if (StrUtil.isEmpty(pageVo.getOrderColumn())) {
                PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize());
            }
            // 如果排序类型为空，默认升级
            else if (StrUtil.isEmpty(pageVo.getOrderStyle())) {
                PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize(), pageVo.getOrderColumn() + " asc");
            } else if (pageVo.getOrderStyle().equalsIgnoreCase("desc"))  // 排序类型降序
                PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize(), pageVo.getOrderColumn() + " desc");
            else { //  排序类型升序
                PageHelper.startPage(pageVo.getPageNum(), pageVo.getPageSize(), pageVo.getOrderColumn() + " asc");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }

    public TableDataInfo getTableDataInfo(List list) {
        TableDataInfo tableDataInfo = new TableDataInfo();
        tableDataInfo.setTotal(new PageInfo(list).getTotal());
        tableDataInfo.setRows(list);
        return tableDataInfo;
    }
}
